home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / ingres04.lzh / source / equel / getkey.c < prev    next >
Encoding:
C/C++ Source or Header  |  1984-12-31  |  844 b   |  58 lines

  1. # include    <stdio.h>
  2. # include    "constants.h"
  3. # include    "globals.h"
  4. # include    <sccs.h>
  5.  
  6. SCCSID(@(#)getkey.c    8.1    12/31/84)
  7.  
  8.  
  9. /*
  10. **  GETKEY -- Get the optab entry for a keyword
  11. **
  12. **    Performs a binary search through Kwrdtab
  13. **    for a given keyword.
  14. **
  15. **    Parameters:
  16. **        key -- char * to the keywords character 
  17. **            representation.
  18. **
  19. **    Returns:
  20. **        a pointer to the optab struct node for that 
  21. **        keyword, or 0 if not found.
  22. */
  23.  
  24.  
  25.  
  26. struct optab
  27. *getkey(key)
  28. char        *key;
  29. {
  30.     register struct optab    *op;
  31.     int            top, bot;
  32.     register int        k;
  33.     extern int        Kwrdnum;
  34.  
  35.     op = Kwrdtab;
  36.     bot = 0;
  37.     top = Kwrdnum - 1;
  38.     do 
  39.     {
  40.         k = (top + bot) / 2;
  41.         switch (scompare(key, 0, op [k].op_term, 0))
  42.         {
  43.  
  44.           case 1 :
  45.             bot = k + 1;
  46.             break;
  47.         
  48.           case 0 :
  49.             return (&op [k]);
  50.  
  51.           case -1 :
  52.             top = k - 1;
  53.             break;
  54.         }
  55.     }  while (bot <= top);
  56.     return (0);
  57. }
  58.